Slack API を利用してユーザーにダイレクトメッセージを送信する
こんにちは、CX事業本部 Delivery部の若槻です。
今回は、ユーザーにダイレクトメッセージ(DM)を送信する Slack アプリを作ってみたかったので、Slack API を利用して DM を送信する方法を確認してみました。
やってみた
アプリの作成
Slack API を使うためには「App(アプリ)」が必要なので作成します。
https://api.slack.com/apps にアクセスし、[Create New App]をクリックします。
アプリの作成方法は今回は [From scratch] を選択します。(manifest を使用した作成方法もあるんですね。今度試してみます)
アプリ名とアプリを実装する Slack ワークスペースを指定して [Create App] をクリック。
これでアプリが作成できました。
アプリへの権限付与
[Features > OAuth & Permissions] を開きます。
Bot Token Scopes に、DM を送信できる権限として chat:write
および im:write
を追加します。
今回は DM 送信にあたり最低限必要な権限のみ付与しています。アプリのユースケースに応じて追加で必要な権限を付与してください。
アプリのワークスペースへのインストール
同じく [Features > OAuth & Permissions] で、[OAuth Tokens for Your Workspace] にて [Install to Workspace] をクリックします。
アプリによるワークスペースへのアクセスを求められるので許可します。
Bot User OAuth Token が発行されるので、コピーして控えておきます。
API から DM を送信してみる
Slack API から DM を送信する際の手順は以下のようになります。API メソッドを叩く際には、先ほど発行した Bot User OAuth Token を利用します。
- 送信先のユーザーIDを取得する
- conversations.open メソッドで送信先ユーザーとの DM チャネルをオープン(レジューム)し、チャネルIDを取得する
- chat.postMessage メソッドで指定のチャネルIDにメッセージを送信する
送信先ユーザーのユーザーIDは、Slack アプリで自分のプロフィールを開き、[Copy member ID] をクリックすれば取得できます。
テスターから送信する
下記リンクより conversations.open
メソッドのテスター画面を開きます。
トークンとユーザーIDを指定して [Test method] をクリック。
API リクエストが成功しました。DM のチャネルがオープンされ、チャネルID が取得できました。
次に下記リンクより chat.postMessage
メソッドのテスター画面を開きます。
トークンとチャネルIDおよびメッセージテキストを指定して [Test method] をクリック。
API リクエストが成功しました。
Slack アプリを見ると、アプリから送信されたダイレクトメッセージが受信できていることが確認できます。
一度 DM チャネルをオープンした後は chat.postMessage
メソッドを使用して連続でメッセージを送信することができます。
おわりに
Slack API を利用して、Slack アプリからダイレクトメッセージを送信する方法を確認してみました。
2,3年振りに Slack API を触ったのですが、設定画面などはあまり変わっていなかったので安心しました。
参考
以上